package 集合.MyCollection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
Iterator:迭代器，集合的专用遍历方式
    Iterator<E> iterator():返回此集合中元素的迭代器，通过集合的iterator()方法得到
    迭代器是通过集合的iterator()方法得到的，依赖于集合存在

    常用方法：
        E next()，返回迭代中的下一个元素
        boolean hasNext():如果迭代具有更多元素，返回true

    collection集合的遍历
    while (it.hasNext()){
          String s=it.next();
          System.out.println(s);
    }

 */
public class IteratorDemo {
    public static void main(String[] args) {
        //创建集合对象
        Collection<String> c=new ArrayList<>();

        //添加元素
        c.add("hello");
        c.add("world");
        c.add("java");

        //Iterator<E> iterator():返回此集合中元素的迭代器，通过集合的iterator()方法得到
        Iterator<String> it=c.iterator();
        /*
            public Iterator<E> iterator() {
                return new Itr();
            }

            private class Itr implements Iterator<E> {...}
         */

        //E next()，返回迭代中的下一个元素
//        System.out.println(it.next());
//        System.out.println(it.next());
//        System.out.println(it.next());
        //System.out.println(it.next());//NoSuchElementException,所请求的元素不存在

        //boolean hasNext():如果迭代具有更多元素，返回true
        /*
        if(it.hasNext()){
            System.out.println(it.next());
        }
        if(it.hasNext()){
            System.out.println(it.next());
        }
        if(it.hasNext()){
            System.out.println(it.next());
        }
        if(it.hasNext()){
            System.out.println(it.next());
        }
        */
        //collection集合的遍历
        //用while循环改进判断
        while (it.hasNext()){
            //System.out.println(it.next());
            String s=it.next();
            System.out.println(s);
        }
    }
}
